import { createSlice } from '@reduxjs/toolkit';
import axios from 'axios';
// 实例对象，储存store数据
const counterStores = createSlice({
  // 模块名独一无二
  name: 'asyncData',
  // 初始化数据
  initialState: {
    dataList: []
  },
  // 修改数据的同步方法
  reducers: {
    setChannelList(state, action) {
      state.dataList = action.payload;
    }
  }
})

// 创建异步
const { setChannelList } = counterStores.actions;
const url = 'http://geek.itheima.net/v1_0/channels'
// 封装一个函数 在函数中return一个新函数 在新函数中封装异步
// 得到数据之后通过dispatch函数 触发修改
const fetchChannelList = () => {
  return async(dispatch) => {
    const res = await axios.get(url)
    dispatch(setChannelList(res.data.data.channels))
  }
}

// 将store的reducer抛出
const asyncReducer = counterStores.reducer;

export { fetchChannelList }
export default asyncReducer;